/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import DAO.util.ConectaBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.sql.Date;


import model.Aluno;

/**
 *
 * @author André
 */
public class AlunoDAO {
        public boolean criar(Aluno aluno){
        try {
            
            Connection conexao = ConectaBanco.getConexao();
        
            String sql = "insert into aluno(nome, endereco, numero, bairro, cep, cidade, estado, telefone, celular, sexo, rg, cpf, data_nascimento, email, nome_responsavel, rg_responsavel, tel_responsavel, modalidade, data_pagamento,status)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,1)";

            PreparedStatement pstmt = conexao.prepareStatement(sql);
        
     
            pstmt.setString(1, aluno.getNome());
            pstmt.setString(2, aluno.getEndereco());
            pstmt.setString(3, aluno.getNumero());
            pstmt.setString(4, aluno.getBairro());
            pstmt.setString(5, aluno.getCep());
            pstmt.setString(6, aluno.getCidade());
            pstmt.setString(7, aluno.getEstado());
            pstmt.setString(8, aluno.getTelefone());
            pstmt.setString(9, aluno.getCelular());
            pstmt.setString(10, aluno.getSexo());            
            pstmt.setString(11, aluno.getRg());
            pstmt.setString(12, aluno.getCpf());            
            pstmt.setDate(13, aluno.getData_Nascimento());
            pstmt.setString(14, aluno.getEmail());
            pstmt.setString(15, aluno.getNome_responsavel());
            pstmt.setString(16, aluno.getRg_responsavel());
            pstmt.setString(17, aluno.getTel_responsavel());
            pstmt.setString(18, aluno.getModalidade());
            pstmt.setDate(19, aluno.getData_pagamento());                  

            
            
            pstmt.execute();
            conexao.close();

            return true;
            
        }catch(SQLException sql){
            sql.printStackTrace();
            return false;
            
            
        }
        
    }
    
       public Aluno buscarPessoaByCodigo(int id) throws ClassNotFoundException,SQLException{
            Connection conexao =ConectaBanco.getConexao();
            PreparedStatement sql = conexao.prepareStatement("select * from aluno where id=?");
            sql.setInt(1, id);
            ResultSet rs = sql.executeQuery();
            Aluno aluno = new Aluno();
            while(rs.next()){
                   
            aluno.setId(rs.getInt("id"));
            aluno.setNome(rs.getString("nome"));
            aluno.setEndereco(rs.getString("endereco"));
            aluno.setNumero(rs.getString("numero"));
            aluno.setBairro(rs.getString("bairro"));            
            aluno.setCep(rs.getString("cep"));         
            aluno.setCidade(rs.getString("cidade"));
            aluno.setEstado(rs.getString("estado"));
            aluno.setTelefone(rs.getString("telefone"));
            aluno.setCelular(rs.getString("celular"));
            aluno.setSexo(rs.getString("sexo"));
            aluno.setRg(rs.getString("rg"));
            aluno.setCpf(rs.getString("cpf"));            
            aluno.setData_Nascimento(rs.getDate("data_nascimento"));
            
          
            aluno.setEmail(rs.getString("email"));
            aluno.setNome_responsavel(rs.getString("nome_responsavel"));
            aluno.setRg_responsavel(rs.getString("rg_responsavel"));
            aluno.setTel_responsavel(rs.getString("tel_responsavel"));
            aluno.setModalidade(rs.getString("modalidade"));
            aluno.setData_pagamento(rs.getDate("data_pagamento"));
         
            
            
            
            }
            return aluno;
    }
    
   
    public ArrayList<Aluno> buscarTodas(String nome){
        ArrayList<Aluno> alunos = new ArrayList<Aluno>();
        Connection conexao = null;
        try{
            conexao = ConectaBanco.getConexao();
            String sql = "select * from aluno where nome ilike ? and status = 1";

           
           PreparedStatement pst = conexao.prepareStatement(sql);
           
           pst.setString(1, nome+"%");
           ResultSet rs = pst.executeQuery();
           
           while (rs.next()){
                Aluno aluno = new Aluno();
                aluno.setId(rs.getInt("id"));
                aluno.setNome(rs.getString("nome"));
                aluno.setEndereco(rs.getString("endereco"));
                aluno.setNumero(rs.getString("numero"));
                aluno.setBairro(rs.getString("bairro"));                
                aluno.setCep(rs.getString("cep"));               
                aluno.setCidade(rs.getString("cidade"));
                aluno.setEstado(rs.getString("estado"));
                aluno.setTelefone(rs.getString("telefone"));
                aluno.setCelular(rs.getString("celular"));                
                aluno.setSexo(rs.getString("sexo"));
                aluno.setRg(rs.getString("rg"));
                aluno.setCpf(rs.getString("cpf"));            
                aluno.setData_Nascimento(rs.getDate("data_nascimento"));
                aluno.setEmail(rs.getString("email"));
                aluno.setNome_responsavel(rs.getString("nome"));
                aluno.setRg_responsavel(rs.getString("rg_responsavel"));
                aluno.setTel_responsavel(rs.getString("tel_responsavel"));
                aluno.setModalidade(rs.getString("modalidade"));
                aluno.setData_pagamento(rs.getDate("data_pagamento"));
                
                alunos.add(aluno);
            }
           
            
           
           conexao.close();
           return alunos;
           
        }catch (Exception sql){
            System.out.println("Erro ao buscar um aluno" +sql.getMessage());
            return null;
        }
        
    }
    
    public boolean atualizar(Aluno aluno){
        try {
            Connection conexao = ConectaBanco.getConexao();
            String sql = "update aluno set nome=?, endereco=?, numero=?, bairro=?, cep=?,  cidade=?, estado=?, telefone=?, celular=?, sexo=?, rg=?, cpf=?, data_nascimento=?, email=?, nome_responsavel=?, rg_responsavel=?, tel_responsavel=?, modalidade=?, data_pagamento=? where id=?";
            PreparedStatement pstmt = conexao.prepareCall(sql);
            System.out.println("Teste método atualizar aluno");
            pstmt.setString(1, aluno.getNome());
            pstmt.setString(2, aluno.getEndereco());
            pstmt.setString(3, aluno.getNumero());
            pstmt.setString(4, aluno.getBairro());
            pstmt.setString(5, aluno.getCep());
            pstmt.setString(6, aluno.getCidade());
            pstmt.setString(7, aluno.getEstado());
            pstmt.setString(8, aluno.getTelefone());
            pstmt.setString(9, aluno.getCelular());
            pstmt.setString(10, aluno.getSexo());            
            pstmt.setString(11, aluno.getRg());
            pstmt.setString(12, aluno.getCpf());
            pstmt.setDate(13, aluno.getData_Nascimento());
            pstmt.setString(14, aluno.getEmail());
            pstmt.setString(15, aluno.getNome_responsavel());
            pstmt.setString(16, aluno.getRg_responsavel());
            pstmt.setString(17, aluno.getTel_responsavel());
            pstmt.setString(18, aluno.getModalidade());
            pstmt.setDate(19, aluno.getData_pagamento());
            
            pstmt.setInt(20, aluno.getId());
            
            System.out.println(sql);
            
            pstmt.execute(); 
            
            conexao.close();
            return true;
        }catch(SQLException sql){
            return false;
            
        }
    }
    
      public boolean apagar(int num){
       
       
        try {
                    
            Connection conexao = ConectaBanco.getConexao();
            
            String sql = "delete from aluno where id = ?";
            PreparedStatement pstmt = conexao.prepareCall(sql);
            pstmt.setInt(1,num);
       
            pstmt.execute();            
                 
            conexao.close();
            return true;
        } catch (Exception ex) {
            return false;
        }
        
        
    }
      
          public boolean marcarInativo(int id) {
        try {
            Connection conexao = ConectaBanco.getConexao();

            String sql = "update aluno set status=0 where id=?";

            PreparedStatement pstmt = conexao.prepareCall(sql);

            pstmt.setInt(1, id);


            pstmt.execute();

            conexao.close();
            return true;
        } catch (SQLException sql) {
        
            return false;

        }
    }
}
